package com.yootk.rsocket.server;

import com.yootk.rsocket.server.acceptor.MessageRSocketAcceptor;
import io.rsocket.core.RSocketServer;
import io.rsocket.frame.decoder.PayloadDecoder;
import io.rsocket.transport.netty.server.TcpServerTransport;
import reactor.core.Disposable;

/**
 * 服务控制类
 */
public class MessageServer {

    private static Disposable disposable;   // 用于释放任务

    public static void start() {    // 服务启动
        RSocketServer rSocketServer = RSocketServer.create();               // 创建RSocket服务端
        rSocketServer.acceptor(new MessageRSocketAcceptor());               // 绑定服务接受者
        rSocketServer.payloadDecoder(PayloadDecoder.ZERO_COPY);             // 采用零拷贝技术
        disposable = rSocketServer.bind(TcpServerTransport.create(6565))    // 绑定端口
                .subscribe();   // 开启订阅
    }

    public static void stop() {     // 服务启动
        disposable.dispose();   // 释放任务
    }
}
